package thread;
//TODO 单例模式之饿汉模式
//"饿"表示非常迫切,实例再类加载的时候就创建了,创建时机非常早,相当于程序一启动,实例就创建了
//"饿汉"形容实例非常迫切,非常早,但是反射可以打破上述操作
//期望这个类只有一个实例(一个进程中)
class Singleton {
    private static Singleton instance = new Singleton();
    //静态:类对象,只有一个

    //instance就是Singleton类对象理持有的属性
//    Singleton.class
    //因此,instance指向的对象就是唯一的一个对象

    public static Singleton getInstance() {

        return instance;//这个本质时"读操作"多个线程同时读取同一个变量,是线程安全的
    }
    private Singleton(){
        //构造方法
//让其new不了
    }
}

public class ThreadDemo26 {
    public static void main(String[] args) {
//    Singleton s = new Singleton();
        Singleton s = Singleton.getInstance();
        Singleton s2 = Singleton.getInstance();//只能通过这个来获取实例
        System.out.println(s == s2);//同一个对象
        //反射可以破坏
    }
}
